﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace UtilidadesDom
{
    public class ErrorUtil
    {
        /// <summary>
        /// Guarda un error en el log de eventos de la máquina.
        /// </summary>
        /// <param name="prmStrFuente">Método fuente del error</param>
        /// <param name="prmStrDatos">Datos utilizados en el método fuente (propiedad=valor)</param>
        /// <param name="prmObjException">Excepción del error</param>
        public static void GuardarError(string prmStrFuente, string[] prmStrDatos, Exception prmObjException)
        {
            string mensajeDatos = "";
            int intTam = prmStrDatos.Length;
            foreach (string dato in prmStrDatos)
            {
                mensajeDatos += dato + " ; ";
            }

            string mensaje = "Fuente: " + prmStrFuente + " \n "
                + "Datos: " + mensajeDatos + " \n " + " \n "
                + "Exception Error: " + prmObjException.Message + " \n "
                + "Exception Source: " + prmObjException.Source + " \n "
                + "Exception Data: " + prmObjException.Data + " \n "
                + "Exception Trace: " + prmObjException.StackTrace;
            EventLog.WriteEntry(prmStrFuente, mensaje, EventLogEntryType.Error);
        }

        /// <summary>
        /// Guarda un error en el log de eventos de la máquina.
        /// </summary>
        /// <param name="prmStrFuente">Método fuente del error</param>
        /// <param name="prmObjException">Excepción del error</param>
        public static void GuardarError(string prmStrFuente, Exception prmObjException)
        {
            string mensaje = "Fuente: " + prmStrFuente + " \n "
                + "Exception Error: " + prmObjException.Message + " \n "
                + "Exception Source: " + prmObjException.Source + " \n "
                + "Exception Data: " + prmObjException.Data + " \n "
                + "Exception Trace: " + prmObjException.StackTrace;
            EventLog.WriteEntry(prmStrFuente, mensaje, EventLogEntryType.Error);
        }
    }
}
